#include <iostream>
#include <cstring>
#include <unistd.h>

using namespace std;

class Human {
private:
    int a;
public:
    virtual ~Human(){cout << "~Human()" << endl;}
    virtual void eating(void) = 0;
    virtual void wearing(void) = 0;
    virtual void driving(void) = 0;
};

class Englishman : public Human {
public:
    virtual ~Englishman(){cout << "~Englishman()" << endl;}
    void eating(void) {cout << "using knife to eat" << endl;}
    void wearing(void) {cout << "Englishman wearing" << endl;}
    void driving(void) {cout << "Englishman driving" << endl;}
};

class Chinese : public Human {
public:
    virtual ~Chinese(){cout << "~Chinese()" << endl;}
    void eating(void) {cout << "using chopsticks to eat" << endl;}
    void wearing(void) {cout << "Chinese wearing" << endl;}
    void driving(void) {cout << "Chinese driving" << endl;}
};

int main() {
    Englishman e;
    Chinese c;

    e.wearing();
    c.wearing();

    return 0;
}
